package com.itbaizhan;

import java.sql.Connection;
import java.sql.Statement;

/**Statement接口测试*/
/*Statement接口的特点：用于执行静态SQL语句并返回它所生成的结果的对象，
* 由createStatement 创建，用于发送简单的SQLy语句（不支持动态绑定）
* 注意：
*     由于Statement对象是一个执行静态SQL语句的对象，
*       所以该对象存在SQL注入风险。
* JDBC中三种Statement对象：
* Statement:用于执行静态SQL语句
* PreparedStatement*:用于执行预编译SQL语句
  CallableStatement:用于执行数据库存储过程/
 */
 /*在navicat 创建表 DDL语句：
 * CREATE table users(userid int(11) not null auto_increment,username VARCHAR(30) default null,
userage int(11) default null,PRIMARY key(userid)
) engine=INNODB DEFAULT charset=utf8;*/
public class TestStatement {
    /*添加用户*/
    public void insertUsers(String username,int userage){
        //要关闭资源，所以在try外定义
        Connection connection = null;
        Statement statement = null;
        try{
            //获取数据库对象
            connection = JdbcUtils.getConnection();
            //获取Statement对象
            statement = connection.createStatement();
            //定义需要执行的SQL语句
            //'' 单引号是字符串   “+ +” 把这个值取出来，再放进变量当中,拼接起来
            String sql = "insert into users values(default,'"+username+"',"+userage+")";
            //执行SQL，返回boolean值 ，如果SQL有结果集返回，那么返回值为true,否则false
            boolean execute =statement.execute(sql);
            System.out.println(execute);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //关闭资源，如果不关闭会占用很多内存
            //后用先关，先关statement,再关connection
            //如果有ResultSet,先关ResultSet,再关statement,最后关connection
            JdbcUtils.closeResource(statement,connection);
        }
    }

    /*修改用户信息*/
    public void updateUsers(int userid,String username,int userage) {
            Statement statement = null;
            Connection connection = null;
        try{
            //获取数据库对象
            connection = JdbcUtils.getConnection();
            //获取Statement对象
            statement = connection.createStatement();
            //定义sql语句
            String sql = "update users set username='"+username+"',userage="+userage+" where userid="+userid;
            //执行sql语句
            int i = statement.executeUpdate(sql);
            System.out.println(i);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JdbcUtils02.closeResource(statement,connection);
        }
    }

    /*根据用户ID删除用户*/
    public  void deleteUsersBYId(int userid){
        Statement statement = null;
        Connection connection = null;
        try{
            //获取数据库连接
            connection = JdbcUtils.getConnection();
            //获取Statement对象
            statement = connection.createStatement();
            //定义SQL语句
            String sql = "delete from users where userid="+userid;
            //执行SQ:语句
           int i = statement.executeUpdate(sql);
            System.out.println(i);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JdbcUtils.closeResource(statement,connection);
        }
    }
}
